<?php

/**
 * Description of TerapeutaServicios
 *
 * @author  Mariano Renkine
 * @author  Fernando Arau
 */
class TerapeutaServicios extends Servicios
{

  function agregar(TerapeutaDTO $terapeutaDTO)
  {
    $repo = new RepoTerapeuta();
    $terapeuta = $this->deDTO($terapeutaDTO);
    $terapeuta->usuario = $this->ObtenerNombreUsuarioSesion();
    return $repo->agregar($terapeuta);
  }

  function modificar(TerapeutaDTO $terapeutaDTO)
  {
    $repo = new RepoTerapeuta();
    $terapeuta =  $this->deDTO($terapeutaDTO);
    $terapeuta->setUsuario($this->ObtenerNombreUsuarioSesion());
    return $repo->modificar($terapeuta);
  }

  function buscar($id)
  {
    $repo = new RepoTerapeuta();
    $terapeuta = $repo->buscar($id);
    return $this->aDTO($terapeuta);
  }

  function listar()
  {
    $repo = new RepoTerapeuta();
    $terapeutas = $repo->listar();
    $terapeutasDTO = null;
    foreach ($terapeutas as $terapeuta)
    {
      $terapeutasDTO[] = $this->aDTO($terapeuta);
    }
    return $terapeutasDTO;
  }

  function listarKeyValues()
  {
    $terapeutas = $this->listar();
    if ($terapeutas != null && count($terapeutas) > 0)
    {
      for ($i = 0; $i < count($terapeutas); $i++)
      {
        $resultado[$i]["key"] = $terapeutas[$i]->getId();
        $resultado[$i]["value"] = $terapeutas[$i]->getNombre();
      }
    } else
    {
      $resultado[0]["key"] = "";
      $resultado[0]["value"] = "";
    }
    return $resultado;
  }

  function valiarDisponibilidadTerapeuta($terapeuta, $fecha, $hora)
  {
    $repo = new RepoTerapeuta();
    return $repo->valiarDisponibilidadTerapeuta($terapeuta, $fecha, $hora);
  }

  function valiarDisponibilidadTerapeutaSinReservaActual($terapeuta, $fecha, $hora, $reserva)
  {
    $repo = new RepoTerapeuta();
    return $repo->valiarDisponibilidadTerapeutaSinReservaActual($terapeuta, $fecha, $hora, $reserva);
  }

  function aDTO(Terapeuta $terapeuta)
  {
    $terapeutaDTO = new TerapeutaDTO();
    $terapeutaDTO->setApellido($terapeuta->getApellido());
    $terapeutaDTO->setCuit($terapeuta->getCuit());
    $terapeutaDTO->setDomicilio($terapeuta->getDomicilio());
    $terapeutaDTO->setEmail($terapeuta->getEmail());
    $terapeutaDTO->setId($terapeuta->getId());
    $terapeutaDTO->setNombre($terapeuta->getNombre());
    $terapeutaDTO->setNroDocumento($terapeuta->getNroDocumento());
    $terapeutaDTO->setTelefono($terapeuta->getTelefono());
    $terapeutaDTO->setDeshabilitado($terapeuta->getDeshabilitado());
    $terapeutaDTO->setTipoDocumento($terapeuta->getTipoDocumento());
    $terapeutaDTO->setVersion($terapeuta->getVersion());
    $terapeutaDTO->setUsuario($terapeuta->getUsuario());
    $terapeutaDTO->setEsExterno($terapeuta->getEsExterno());
    if (is_array($terapeuta->getTratamientos()))
    {
      /* @var $tratamiento Tratamiento */
      foreach ($terapeuta->getTratamientos() as $tratamiento)
      {
        $tratamientoDTO = new TratamientoDTO();
        $tratamientoDTO->setId($tratamiento->getId());
        $tratamientoDTO->setNombre($tratamiento->getNombre());
        $tratamientos[] = $tratamientoDTO;
      }
      $terapeutaDTO->setTratamientos($tratamientos);
    }
    return $terapeutaDTO;
  }

  function deDTO(TerapeutaDTO $terapeutaDTO)
  {
    $terapeuta = new Terapeuta();
    $terapeuta->setApellido($terapeutaDTO->getApellido());
    $terapeuta->setCuit($terapeutaDTO->getCuit());
    $terapeuta->setDomicilio($terapeutaDTO->getDomicilio());
    $terapeuta->setEmail($terapeutaDTO->getEmail());
    $terapeuta->setId($terapeutaDTO->getId());
    $terapeuta->setNombre($terapeutaDTO->getNombre());
    $terapeuta->setNroDocumento($terapeutaDTO->getNroDocumento());
    $terapeuta->setTelefono($terapeutaDTO->getTelefono());
    $terapeuta->setVersion($terapeutaDTO->getVersion());
    $terapeuta->setUsuario($terapeutaDTO->getUsuario());
    $terapeuta->setEsExterno($terapeutaDTO->getEsExterno());
    if (is_array($terapeutaDTO->getTratamientos()))
    {
      /* @var $tratamientoDTO TratamientoDTO */
      foreach ($terapeutaDTO->getTratamientos() as $tratamientoDTO)
      {
        $tratamiento = new Tratamiento();
        $tratamiento->setId($tratamientoDTO->getId());
        $tratamientos[] = $tratamiento;
      }
      $terapeuta->setTratamientos($tratamientos);
    }
    $terapeuta->setDeshabilitado($terapeutaDTO->getDeshabilitado() == '' ? 0 : $terapeutaDTO->getDeshabilitado());
    $tipoDocumento = new TipoDocumento();
    $tipoDocumento->setId($terapeutaDTO->getIdTipoDocumento());
    $terapeuta->setTipoDocumento($tipoDocumento);
    return $terapeuta;
  }

  function eliminar($id)
  {
    $repoTerapeuta = new RepoTerapeuta();
    return $repoTerapeuta->eliminar($id);
  }

}

?>
